//*****************************************************************
//文件上传组件
//开发：邬畏畏
//时间：2013-9-7
//部门：IsoftStone CBG
//基于Jquery
//----------参数说明--------------------
//p:容器
//maxFileCount   :  一次允许上传最大文件数
//max            :   外界可设置，上传文件最大数
//index          :  <input type='file'...>的 id 索引值,是选上传文件的序号
//upIndex        ：  单击开始上传的序号
//TID            ：  是时间ID
//兼容性说明               ： IE下必须单击 <input type='file'>的浏览按钮才能选文件
//                  非IE可以使用普通按钮调用 <input type='file'>的浏览按钮事件
//notStart       : 为了处理BUG，如果没有此参数，当用户还没有选择文件就单击上传也会提示“上传成功”，这样不合理，
//                 所以用此参数表明用户是否选择了一个活多个文件
//type          :  表示多文件上传还是单文件上传,默认单文件上传
//filter        :  可以上传的文件类型
//*******************************************************************

var wFileBox = {p:null,maxFileCount:10,index:0,upIndex:0,TID:-1,notStart:true,filter:[],type:"single",max:10};

wFileBox.ie=function(){
	if(navigator.userAgent.indexOf("IE")>0)
	{return true;}
	else
	{return false;}
};
wFileBox.safari = function(){
	if(navigator.userAgent.indexOf("IE")>0);
}
//*************************************
//**外界调用入口**
//调用:wFileBox.init(content,serverURL[,type],[".ext|.ext|..."]);
//示例:wFileBox.init("#uploadContent","upLoad.jsp","multi",".jpg|.png");
//
//-------------------------------------
wFileBox.init = function(id,url,type,filter){
	/*id=容器,url=服务器程序,type=single|multi(单文件还是多文件上传),filter=上传文件类型*/
	var i;
	if(wFileBox.type=="single"){wFileBox.maxFileCount=1;}
	if(arguments.length<2){alert("参数不足");return;}
	if(arguments.length>2)
	{
		if(type!="single"&&type!="multi"){alert("参数不正确");return;}
		wFileBox.type = type || wFileBox.type;

		if(wFileBox.type=="single"){wFileBox.maxFileCount=1;}else{wFileBox.maxFileCount=wFileBox.max;}
	}
	if(arguments.length>3)
	{
		wFileBox.filter = filter.split("|");
	}
	
	wFileBox.p = $(id);
	wFileBox.url=url;
	
	var buttons = "<div>"+
				  "<button id='selectFile' type='button' onclick='wFileBox.createFileBox()'>选择上传的文件</button>"+
				  "&nbsp;&nbsp;<button id='submitBtn' type='button' onclick='wFileBox.upload()'>开始上传</button>"+
				  "</div>";
	wFileBox.p.html(buttons);
	
	var formStart = "<form id='wform' method='post' action='" + url + "' enctype='multipart/form-data' target='uploadframe'>";
	var formEnd = "</form>";
	
	ifr ="<div><iframe id='uploadframe' name='uploadframe' src='' style='visibility:hidden;display:none'></iframe></div>";
	wFileBox.p.html(wFileBox.p.html() + ifr);
	
	if(wFileBox.ie())
	{
		for(i=1;i<=wFileBox.maxFileCount;i++)
		{
			fileStr ="<div id='Box"+i+"' style='height:30px;border:1px solid #ccc;margin-top:10px;position:relative;display:block' class='ctl-box'>"+
			"<div id='loading" + i + "' class='loading' style='display:none;'></div>"+
			"<div class='del' onclick='wFileBox.deleteFile("+i+")'>删除</div>"+
			/*  "<div class='img'><img id='img" + i + "' src='' width='27' height='27' style='display:none' onclick='wFileBox.showImg("+i+")'/></div>"+  */
			"<div class='ctl-file' style='display:block;margin-top:5px;'><input style='width:240px;' type='file' id='file" + i + "' name='file' value='' onchange='wFileBox.onChange("+i+")'/><input id='submit" + i + "' type='submit' value='tj' style='display:none'/></div>"+
			"</div>";
			wFileBox.p.html(wFileBox.p.html() + fileStr);
		}
		wFileBox.p.html(formStart + wFileBox.p.html() + formEnd);
	}
	else
	{
		for(i=1;i<=wFileBox.maxFileCount;i++)
		{
			fileStr ="<div id='Box"+i+"' style='height:30px;border:1px solid #ccc;margin-top:10px;position:relative;display:none' class='ctl-box'>"+
			"<div class='fileName fl' id='fileName" + i + "'></div><div class='fl loading2' style='display:none;'>&nbsp;</div>"+
			"<div class='del' onclick='wFileBox.deleteFile("+i+")'>删除</div>"+
			/*  "<div class='img'><img id='img" + i + "' src='' width='27' height='27' style='display:block' onclick='wFileBox.showImg("+i+")'/></div>"+  */		
			"<div class='ctl-file' style='display:none'><input type='file' id='file" + i + "' name='file' value='' onchange='wFileBox.onChange("+i+")'/><input id='submit" + i + "' type='submit' value='tj' style='display:none'/></div>"+
			"</div>";
			
			wFileBox.p.html(wFileBox.p.html() + fileStr);
		}
		wFileBox.p.html(formStart + wFileBox.p.html() + formEnd);
	}
	if(wFileBox.type=="single")
	{
		$(".del").hide();
	}
}

//**************************
//选择上传文件的处理方法
//功能：选择上传文件
//说明：对外接口
//-------------------------
wFileBox.createFileBox=function(){
	if(!wFileBox.ie())
	{
		if(wFileBox.type=="single")
		{
			wFileBox.index=1;
			wFileBox.triggerEvent("#file1");
		}else
		{
			wFileBox.index++;
			wFileBox.triggerEvent("#file"+wFileBox.index);
		}
	}
	else
	{
		alert("请单击“浏览...”按钮选择上传的文件");
	}
}

wFileBox.triggerEvent=function(id){
	$(id)[0].click();
	$("#fileName"+wFileBox.index).html($("#file"+wFileBox.index)[0].value);
}

//**************************
//开始上传文件的处理方法
//功能：开始上传文件
//说明：对外接口
//--------------------------
wFileBox.upload=function(){  /*单击开始上传按钮的方法*/
	var i;
	for(i=1;i<=wFileBox.maxFileCount;i++)
	{
		if(wFileBox.filter.length==1)break;
		if(wFileBox.ie())
		{
			if($("#file"+i).val()!="")
			{
				if(!wFileBox.checkFilter(i))
				{
					alert("上传文件类型不正确");return;
				};
			}
		}
	}
	if(wFileBox.notStart)
	{
		alert("请选择上传的文件！");
		return ;
	}
	wFileBox.DisableButton(true);
	wFileBox.showLoading();
	wFileBox.upIndex++;
	
	try
	{
		if(wFileBox.TID==-1)
		{
			wFileBox.onTimer();
		}
		
		try
		{
			$("#wform")[0].submit();
		}catch(e){;}

	}
	catch(e)
	{
		//alert(e);
	}
}

wFileBox.onTimer=function(){  /*每隔2秒检查是否上传成功，后台程序输出“SUCCESS”表示上传 成功*/
	wFileBox.TID = setInterval(function(){
		//alert(window.frames["uploadframe"].document.innerHTML);
		if($("#uploadframe")[0].contentWindow.document.getElementsByTagName("BODY")[0].innerHTML.indexOf("SUCCESS")>=0)
		{
			clearInterval(wFileBox.TID);
			wFileBox.index=0;
			wFileBox.upIndex=0;
			wFileBox.TID=-1;
			wFileBox.hideLoading();
			wFileBox.notStart=true;
			alert("上传完毕！");
			wFileBox.p.html("");
			wFileBox.init(wFileBox.p,wFileBox.url);
		}
	},2000);
}

//**************************
//通过对话框选择文件后处理方法
//功能：在非IE浏览器中显示上传文件的名称
//--------------------------
wFileBox.onChange = function(index){
	var i;
	wFileBox.notStart = false;
	
	if(!wFileBox.checkFilter(index))
	{
		alert("文件类型不正确");
	}
	
	try
	{
		$("#fileName"+wFileBox.index).html($("#file"+wFileBox.index)[0].value);
		$("#Box"+wFileBox.index).css("display","block");
	}
	catch(e){;}
}

//**************************
//功能：检查所有上传文件的扩展名是否合法
//返回true=合法，返回false=不合法
wFileBox.checkFilter = function(index){
	var i,tmp,reg,b=false;
	reg = /\.\w{3}/;
	tmp = reg.exec($("#file"+index).val());
	tmp = tmp.toString();
	if(wFileBox.filter.length==0)return true;
	for(i=0;i<wFileBox.filter.length;i++)
	{
		if(wFileBox.filter[i]==tmp)
		{b=true;}
	}
	if(!b)
	{
		wFileBox.index--;       /*For IE,firefox,chrome*/
		return false;
	}
	else
	{
		return true;
	}
}
//**************************
//功能：删除预上传文件的处理方法
//--------------------------
wFileBox.deleteFile = function(index){ /*删除某个<input type='file'..>元素*/
	$("#Box"+index)[0].outerHTML="";
}

//**************************
//功能：模拟提交
//说明：在IE下需要<input type='file'>提交两次，所以在初始化时先调用此方法
//--------------------------
wFileBox.initSubmit = function(){/*IE有BUG需要两次提交，所以初始化的时候，把所有 表单提交一次*/
	var i;
	for(i=1;i<=wFileBox.maxFileCount;i++)
	{
		$("#submit"+i)[0].click();
	}
}

//显示loading gif
wFileBox.showLoading = function(){
	var tmp;
	if(wFileBox.ie())
	{
		for(i=1;i<=wFileBox.maxFileCount;i++)
		{
			try{
				tmp = $("#file"+i)[0].value;
				if(tmp.toString().length>0)
				{
					$("#loading"+i).show();
				}
			}
			catch(e){;};
		}
	}
	else
	{
		$(".loading2").show();
	}
}

//隐藏loading gif
wFileBox.hideLoading = function(){
	$(".loading").hide();//for IE
	$(".loading2").hide();// for firfox,webkit
}

wFileBox.DisableButton = function(b){
	if(b)
	{
		$("#selectFile").attr("disabled","disabled");
		$("#submitBtn").attr("disabled","disabled");
	}
}

//暂时不用到
wFileBox.showImg = function(index){
	window.open($("#file"+index).val());
}
